之前聽數邏老師說 NOR NAND 邏輯才是萬用邏輯(NOR NAND大多用在硬體設計或邏輯設計)。但現在進入軟體的時代時,XOR反而變成一個十分重要的邏輯。幾乎所有演算法多少都有他的觀念 (分析,儲存,排列,合併,搜尋)。
可說是軟體界的萬用邏輯
電腦都是以2進位運算,可用2進位來做很多事情(MSB)……<2N次方>,<2的0次方=1>(LSB)
| 數列 | bin | 
|---|---|
| 1st | 001 | 
| 2nd | 010 | 
| 3rd | 011 | 
| 4th | 100 | 
| ...... | …… | 
| 真值表 | XOR | 
|---|---|
| 00 | 0 | 
| 01 | 1 | 
| 10 | 1 | 
| 11 | 0 | 
| 一樣數字就0,不一樣就1 | 
真值表 | XOR | 真值表 | XOR
------------- | -------------
000 | 0 | 100 | 1
001 | 1 | 101 | 0
010 | 1 | 110 | 0
011 | 0 | 111 | 1
奇數個1輸出1,反之就是0
有時資料多會變成所謂的匯流排(bus) 這時就要透過邏輯決定哪些資料要進出。
ps:程式邏輯都是以2進位去計算 輸出會再轉成10進位
Ex:(邏輯運算) AND= & OR= | XOR= ^
a , b ,c , d , e = 18 ,8 ,0xc , 0b110 , 0o777
print(a&b&c)
print(c&d&e)
print(a|b|c)
print(c|d|e)
print(a^b^c)
print(c^d^e)
XOR密碼是個非常簡單的加密方式 它運算過程中會產生一組key(密碼)來對應原有的資料 可做一次性加密
假如有一純數字資料:872590
隨機(random) 產生密碼:514872
對這兩個數列互斥或(XOR)
print(872590^514872)
得到 691126 這串數字
我們再對這串數字做反運算
print(691126^514872)
發現變成原有的純數字資料了 872590
由此可發現XOR可具有簡單的加密,相當於先XOR產生一則密文。之後再透過密碼解密 就可以得到原有資料
ps:以明文稱未修改過原資料或可讀取的訊息
Ex:(做個簡單xor程式)
def encode():
    key = int(input("輸入自訂密碼"))
    msg = int(input("填入要加密的資料"))
    return key^msg
'''
'''
def decode():
    dekey = int(input("輸入密碼"))
    pwdmsg = int(input("加密的資料"))
    return dekey^pwdmsg